#!/usr/bin/python
# -*- coding: utf-8 -*-

# Copyright (c) 2011
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# Author: Jesus Carrero <j.o.carrero@gmail.com>
# Mountain View, CA
#

from utils.Quadrature import LegendreGaussQuadrature
from LevySolverAdaptor import LevySolverAdaptor


class NumericalOptionLevy(LevySolverAdaptor):


    __slots__ = ['m_oType', 'm_cType', 'm_greeks', 'm_femBasis', 'm_priceMode']

    def __init__(self, oType, T, S0, K, m, nSeg, Smin=None, Smax=None):

        if oType not in ['A', 'E']:
            rise('available pricing types: [American, European]')
            assert False

        (self.m_oType, self.m_cType) = (oType, 'vanilla')
        (self.m_greeks, self.m_femBasis) = (None, None)
        self.m_priceMode = 'price-range'
        LevySolverAdaptor.__init__(self, T, S0, K, m, nSeg, Smin, Smax)

